// 《围棋》作者版权所有。保留所有权利。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

// 包编码定义了由其他包共享的接口，这些包将数据转换为字节级和文本表示，并将数据转换为字节级和文本表示。
// 检查这些接口的包包括encoding/gob、
// encoding/json和encoding/xml。因此，只要实现一次
// 接口，类型就可以在多种编码中使用。
// 实现这些接口的标准类型包括时间。时间和网络。IP。
// 接口成对出现，用于生成和使用编码数据。
package encoding

// BinaryMarshaler是由一个对象实现的接口，该对象可以将自身封送为二进制形式。
// 
// MarshallBinary将接收器编码为二进制形式并返回结果。
type BinaryMarshaler interface {
	MarshalBinary() (data []byte, err error)
}

// BinaryUnmarshaler是由一个对象实现的接口，该对象可以对自身的二进制表示进行解包。
// 
// UnmarshalBinary必须能够解码MarshalBinary生成的表单。
// UnmarshalBinary如果希望在返回后保留数据，则必须复制数据
// 。wen jian defg
type BinaryUnmarshaler interface {
	UnmarshalBinary(data []byte) error
}

// 
// MarshalText将接收器编码为UTF-8编码文本并返回结果。
type TextMarshaler interface {
	MarshalText() (text []byte, err error)
}

// TextUnmarshaler是由一个对象实现的接口，该对象可以对自身的文本表示进行解压。
// 
// UnmarshalText必须能够解码MarshalText生成的表单。
// UnmarshalText如果想要在返回后保留文本
// 必须复制文本。
type TextUnmarshaler interface {
	UnmarshalText(text []byte) error
}
